#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

int main() {
    // 打开模式
    // r  以只读的方式打开文件 (不创建文件, 若文件不存在就报错)
    // w  以只写的方式打开文件 (文件不存在就创建文件, 如果文件存在就清空文件内容)
    // b  以二进制的文本类型读或写文件
    // r+ 以可读、可写的方式打开文件 (不创建新文件)
    // w+ 以可读、可写的方式打开文件 (文件不存在就创建文件, 如果文件存在就清空文件内容)
    // a+ 以文本添加的方式打开文件 (打开文件并在末尾追加文件, 若文件不存在就创建文件)
    FILE *wfp_01 = fopen("./a.txt", "a+");

    // 从内存中读取数据到文件中 (遇到 \0 就结束读取)
    char *buffer_01 = (char *) malloc(1024);
    memcpy(buffer_01, "Hello World\n", strlen("Hello World\n"));
    fputs(buffer_01, wfp_01);

    FILE *rfp_01 = fopen("./a.txt", "r");

    // 从文件读取数据到内存中
    void *p = NULL;
    char *buffer_02 = (char *) malloc(sizeof(char) * 1024);
    while ((p = fgets(buffer_02, 1024, rfp_01)) != NULL) {
        printf("%s", buffer_02);
    }

    return 0;
}